package com.dmap.analysispoint.job;

import com.dangdang.ddframe.job.api.ShardingContext;
import com.dangdang.ddframe.job.api.simple.SimpleJob;
import com.dmap.analysispoint.constants.BurialPointConstant;
import com.dmap.analysispoint.service.UncertaintyInfoAnalysisService;
import com.dmap.base.send.email.MailService;
import com.dmap.schedule.annotation.ElasticJobConf;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;

import javax.annotation.Resource;
import javax.mail.MessagingException;

/**
 * @author guanming
 * @date 18-7-13下午4:02
 * @Description: 没有匹配到companyId的埋点信息定时自动分析再处理
 */
@ElasticJobConf(name = "按天对没有匹配到companyId的埋点信息定时自动分析再处理", cron = "0 0 23 * * ?", eventTraceRdbDataSource = "datasourcelog")
public class UncertaintyInfoAnalysisTimerJob implements SimpleJob {

    private final static Logger logger = LoggerFactory.getLogger(UncertaintyInfoAnalysisTimerJob.class);

    @Value("${spring.profiles.active}")
    private String environment;

    @Resource
    private UncertaintyInfoAnalysisService uncertaintyInfoAnalysisService;

    @Override
    public void execute(ShardingContext shardingContext) {
        try {
            logger.info("-----------按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增帐号信息)开始-----------------");
            uncertaintyInfoAnalysisService.addUserInfoAgainAnalysis();
            MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息(新增帐号信息)定时自动分析再处理定时任务成功");
        } catch (MessagingException me) {
            logger.error("按天对没有匹配到companyId的埋点信息(新增帐号信息)定时自动分析再处理定时任务 MailService.sendMail error:  {}", me);
        } catch (Exception e) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增帐号信息)  error: " + e);
            try {
                MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息(新增帐号信息)定时自动分析再处理定时任务 error: " + e);
            } catch (MessagingException me) {
                logger.error("按天对没有匹配到companyId的埋点信息(新增帐号信息)定时自动分析再处理定时任务 MailService.sendMail error:  {}", me);
            }
        }

        try {
            logger.info("-----------按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增手机信息)开始-----------------");
            uncertaintyInfoAnalysisService.addPhoneInfoAgainAnalysis();
            MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增手机信息) 成功");
        } catch (MessagingException me) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增手机信息) MailService.sendMail error:  {}", me);
        } catch (Exception e) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增手机信息)  error: " + e);
            try {
                MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增手机信息) error: " + e);
            } catch (MessagingException me) {
                logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增手机信息) MailService.sendMail error:  {}", me);
            }
        }

        try {
            logger.info("-----------按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增设备信息)开始-----------------");
            uncertaintyInfoAnalysisService.addEquipmentInfoAgainAnalysis();
            MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增设备信息) 成功");
        } catch (MessagingException me) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增设备信息) MailService.sendMail error:  {}", me);
        } catch (Exception e) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增设备信息)  error: " + e);
            try {
                MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增设备信息) error: " + e);
            } catch (MessagingException me) {
                logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增设备信息) MailService.sendMail error:  {}", me);
            }
        }

        try {
            logger.info("-----------按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃帐号信息)开始-----------------");
            uncertaintyInfoAnalysisService.activeUserHourInfoAgainAnalysis();
            MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃帐号信息) 成功");
        } catch (MessagingException me) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃帐号信息) MailService.sendMail error:  {}", me);
        } catch (Exception e) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃帐号信息)  error: " + e);
            try {
                MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃帐号信息) error: " + e);
            } catch (MessagingException me) {
                logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃帐号信息) MailService.sendMail error:  {}", me);
            }
        }

        try {
            logger.info("-----------按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃帐号信息)开始-----------------");
            uncertaintyInfoAnalysisService.activeUserDayInfoAgainAnalysis();
            MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃帐号信息) 成功");
        } catch (MessagingException me) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃帐号信息) MailService.sendMail error:  {}", me);
        } catch (Exception e) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃帐号信息)  error: " + e);
            try {
                MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃帐号信息) error: " + e);
            } catch (MessagingException me) {
                logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃帐号信息) MailService.sendMail error:  {}", me);
            }
        }

        try {
            logger.info("-----------按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃用手机信息)开始-----------------");
            uncertaintyInfoAnalysisService.activePhoneHourInfoAgainAnalysis();
            MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃手机信息) 成功");
        } catch (MessagingException me) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃手机信息) MailService.sendMail error:  {}", me);
        } catch (Exception e) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃手机信息)  error: " + e);
            try {
                MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃手机信息) error: " + e);
            } catch (MessagingException me) {
                logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃手机信息) MailService.sendMail error:  {}", me);
            }
        }

        try {
            logger.info("-----------按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃用手机信息)开始-----------------");
            uncertaintyInfoAnalysisService.activePhoneDayInfoAgainAnalysis();
            MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃手机信息) 成功");
        } catch (MessagingException me) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃手机信息) MailService.sendMail error:  {}", me);
        } catch (Exception e) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃手机信息)  error: " + e);
            try {
                MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃手机信息) error: " + e);
            } catch (MessagingException me) {
                logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃手机信息) MailService.sendMail error:  {}", me);
            }
        }

        try {
            logger.info("-----------按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃设备信息)开始-----------------");
            uncertaintyInfoAnalysisService.activeEquipmentHourInfoAgainAnalysis();
            MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃设备信息) 成功");
        } catch (MessagingException me) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃设备信息) MailService.sendMail error:  {}", me);
        } catch (Exception e) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃设备信息)  error: " + e);
            try {
                MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃设备信息) error: " + e);
            } catch (MessagingException me) {
                logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(小时活跃设备信息) MailService.sendMail error:  {}", me);
            }
        }

        try {
            logger.info("-----------按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃设备信息)开始-----------------");
            uncertaintyInfoAnalysisService.activeEquipmentDayInfoAgainAnalysis();
            MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃设备信息) 成功");
        } catch (MessagingException me) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃设备信息) MailService.sendMail error:  {}", me);
        } catch (Exception e) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃设备信息)  error: " + e);
            try {
                MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃设备信息) error: " + e);
            } catch (MessagingException me) {
                logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(天活跃设备信息) MailService.sendMail error:  {}", me);
            }
        }

        try {
            logger.info("-----------按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增APP版本信息)开始-----------------");
            uncertaintyInfoAnalysisService.appVersionInfoAgainAnalysis();
            MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增APP版本信息) 成功");
        } catch (MessagingException me) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增APP版本信息) MailService.sendMail error:  {}", me);
        } catch (Exception e) {
            logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增APP版本信息)  error: " + e);
            try {
                MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增APP版本信息) error: " + e);
            } catch (MessagingException me) {
                logger.error("按天对没有匹配到companyId的埋点信息定时自动分析再处理(新增APP版本信息) MailService.sendMail error:  {}", me);
            }
        }

        try {
            logger.info("-----------按天对没有匹配到companyId的数据看板预处理信息再处理开始-----------------");
            uncertaintyInfoAnalysisService.addAndActivePhoneInfoAgainAnalysis();
            MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的数据看板预处理信息再处理 成功");
        } catch (MessagingException me) {
            logger.error("按天对没有匹配到companyId的数据看板预处理信息再处理 MailService.sendMail error:  {}", me);
        } catch (Exception e) {
            logger.error("按天对没有匹配到companyId的数据看板预处理信息再处理  error: " + e);
            try {
                MailService.sendMail(BurialPointConstant.EMAIL_ADDRESS, BurialPointConstant.EMAIL_SUBJECT + " — " + "环境:" + environment, "按天对没有匹配到companyId的数据看板预处理信息再处理 error: " + e);
            } catch (MessagingException me) {
                logger.error("按天对没有匹配到companyId的数据看板预处理信息再处理 MailService.sendMail error:  {}", me);
            }
        }

    }
}
